﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class СчетаУчетаВДокументах
	{
		////////////////////////////////////////////////////////////////////////////////
		//
		// ОПРЕДЕЛЕНИЕ СЧЕТОВ УЧЕТА НОМЕНКЛАТУРЫ ИЗ НАСТРОЕК
		//
		// Подготавливает текст запроса для получения актуального документа УстановкаПараметровУчетаНоменклатуры
		//
		// Параметры
		//  СтруктураДополнительныхПолей - Структура. Если передана, то в текст запроса будут включены и другие поля документа, кроме ссылки.
		//                                 Ключи структуры - имена полей, а значения - путь к реквизитам документа.
		//                                 Значения могут опускаться, если путь совпадает с именем поля.
		//
		// Возвращаемое значение
		//  Строка, текст запроса
		//

		public object ПолучитьТекстЗапросаДокументУстановкиПараметровУчетаНоменклатуры(/*СтруктураДополнительныхПолей = Неопределено, ИмяВременнойТаблицы = ""*/)
		{
			/*// дополним текст запроса дополнительными полями
*/
			//ДополнительныеПоля = "";
			if(true/*СтруктураДополнительныхПолей <> Неопределено*/)
			{
			}
			/*ТекстЗапроса = 
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	УстановкаПараметровУчетаНоменклатуры.Ссылка  КАК Ссылка
	|"	+ ДополнительныеПоля + "
	|"  +  ?(ЗначениеЗаполнено(ИмяВременнойТаблицы), "ПОМЕСТИТЬ " + ИмяВременнойТаблицы, "") + "
	|ИЗ
	|	Документ.УстановкаПараметровУчетаНоменклатуры КАК УстановкаПараметровУчетаНоменклатуры
	|
	|ГДЕ
	|	УстановкаПараметровУчетаНоменклатуры.Проведен
	|	И (УстановкаПараметровУчетаНоменклатуры.Дата <= &Дата
	|			ИЛИ &Дата = ДАТАВРЕМЯ(1, 1, 1))
	|
	|УПОРЯДОЧИТЬ ПО
	|	УстановкаПараметровУчетаНоменклатуры.Дата УБЫВ,
	|	Ссылка УБЫВ";*/
			return null;
		}
		//Возвращает текст запроса, которым можно получить данные действующих счетов учета
		//по данным документа УстановкаПараметровУчетаНоменклатуры

		public object ПолучитьТекстЗапросаСчетовУчетаНоменклатуры(/**/)
		{
			/*//Запрос может использоваться 
*/
			/*// - для получения счетов с целью их подстановки в документы и таблицы используемые в ходе формирования движений по регистру
*/
			/*// - (планируется) формирования текста запроса для получения данных документа при проведении (для производственных документов)
*/
			/*// - (планируется) для формирования отчета о настройках счетов, показывающих как (где именно) выполнена действующая настройка, 
*/
			/*//		например, для конкретной номенклатуры
*/
			/*ТекстЗапроса = ПолучитьТекстЗапросаДокументУстановкиПараметровУчетаНоменклатуры(,"ДействующийДокументУстановкиПараметровУчетаНоменклатуры")
		+ ";" + Символы.ПС;*/
			/*ТекстЗапроса = ТекстЗапроса + 
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Номенклатура,
	|	Номенклатура.ВидНоменклатуры
	|ПОМЕСТИТЬ ДанныеНоменклатуры
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Ссылка В(&СписокНоменклатуры)
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеНоменклатуры.Номенклатура КАК Номенклатура,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.Организация,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.Номенклатура КАК НоменклатураНастройки,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.НомерСтроки КАК НомерСтроки,
	|	""Товары"" КАК ИмяТабличнойЧасти,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.СчетУчетаБУ,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.СчетДоходовБУ,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.СчетРасходовБУ,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.СчетУчетаНУ,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.СчетДоходовНУ,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.СчетРасходовНУ,
	|	УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.ПринадлежностьНоменклатуры,
	|	ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетЗатрат,
	|	ЗНАЧЕНИЕ(ПланСчетов.Налоговый.ПустаяСсылка) КАК СчетЗатратНУ
	|
	|ПОМЕСТИТЬ ДанныеСчетов
	|ИЗ
	|	Документ.УстановкаПараметровУчетаНоменклатуры.СчетаУчетаНоменклатуры КАК УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеНоменклатуры КАК ДанныеНоменклатуры
	|		ПО (УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.Номенклатура = Неопределено 
	|				ИЛИ УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.Номенклатура = ДанныеНоменклатуры.ВидНоменклатуры
	|				ИЛИ УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.Номенклатура = ДанныеНоменклатуры.Номенклатура
	|				)
	|			И ДанныеНоменклатуры.ВидНоменклатуры.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДействующийДокументУстановкиПараметровУчетаНоменклатуры
	|		ПО (ДействующийДокументУстановкиПараметровУчетаНоменклатуры.Ссылка = УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.Ссылка)
	|ГДЕ
	|	(УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.Организация = &Организация
	|			ИЛИ УстановкаПараметровУчетаНоменклатурыСчетаУчетаНоменклатуры.Организация = Значение(Справочник.Организации.ПустаяСсылка))
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ДанныеНоменклатурыУслуг.Номенклатура КАК Номенклатура,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Организация,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Номенклатура,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.НомерСтроки,
	|	""Услуги"",
	|	ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка),
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетДоходовБУ,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетРасходовБУ,
	|	ЗНАЧЕНИЕ(ПланСчетов.Налоговый.ПустаяСсылка),
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетДоходовНУ,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетРасходовНУ,
	|	Значение(Перечисление.ПринадлежностьНоменклатуры.ПустаяСсылка),
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетЗатрат,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетЗатратНУ
	|ИЗ
	|	Документ.УстановкаПараметровУчетаНоменклатуры.ПараметрыУчетаУслуг КАК УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеНоменклатуры КАК ДанныеНоменклатурыУслуг
	|		ПО (УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Номенклатура = Неопределено 
	|				ИЛИ УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Номенклатура = ДанныеНоменклатурыУслуг.ВидНоменклатуры
	|				ИЛИ УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Номенклатура = ДанныеНоменклатурыУслуг.Номенклатура
	|				)
	|			И ДанныеНоменклатурыУслуг.ВидНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)	
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДействующийДокументУстановкиПараметровУчетаНоменклатуры
	|		ПО (ДействующийДокументУстановкиПараметровУчетаНоменклатуры.Ссылка = УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Ссылка)
	|ГДЕ
	|	(УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Организация = &Организация
	|			ИЛИ УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Организация = Значение(Справочник.Организации.ПустаяСсылка))
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеСчетов.Номенклатура КАК Номенклатура,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА ДанныеСчетов.Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
	|				ТОГДА 0
	|			ИНАЧЕ 1
	|		КОНЕЦ + ВЫБОР
	|			КОГДА ДанныеСчетов.НоменклатураНастройки = НЕОПРЕДЕЛЕНО
	|				ТОГДА 2
	|			КОГДА ДанныеСчетов.НоменклатураНастройки ССЫЛКА Справочник.ВидыНоменклатуры
	|				ТОГДА 4
	|			ИНАЧЕ 6
	|		КОНЕЦ) КАК Приоритет,
	|	ДанныеСчетов.НомерСтроки КАК НомерСтроки,
	|	ДанныеСчетов.ИмяТабличнойЧасти КАК ИмяТабличнойЧасти
	|ПОМЕСТИТЬ Приоритеты
	|ИЗ
	|	ДанныеСчетов КАК ДанныеСчетов
	|
	|СГРУППИРОВАТЬ ПО
	|	ДанныеСчетов.Номенклатура,
	|	ДанныеСчетов.НомерСтроки,
	|	ДанныеСчетов.ИмяТабличнойЧасти
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеСчетов.Номенклатура,
	|	ДанныеСчетов.СчетУчетаБУ,
	|	ДанныеСчетов.НоменклатураНастройки,
	|	ДанныеСчетов.НомерСтроки,
	|	ДанныеСчетов.ИмяТабличнойЧасти,
	|	ДанныеСчетов.Организация,
	|	Приоритеты.Приоритет,
	|	ДанныеСчетов.СчетДоходовБУ,
	|	ДанныеСчетов.СчетРасходовБУ,
	|	ДанныеСчетов.СчетУчетаНУ,
	|	ДанныеСчетов.СчетДоходовНУ,
	|	ДанныеСчетов.СчетРасходовНУ,
	|	ДанныеСчетов.ПринадлежностьНоменклатуры,
	|	ДанныеСчетов.СчетЗатрат,
	|	ДанныеСчетов.СчетЗатратНУ
	|ИЗ
	|	ДанныеСчетов КАК ДанныеСчетов
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Приоритеты КАК Приоритеты
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|				Приоритеты.Номенклатура КАК Номенклатура,
	|				МАКСИМУМ(Приоритеты.Приоритет) КАК Приоритет
	|			ИЗ
	|				Приоритеты КАК Приоритеты
	|			
	|			СГРУППИРОВАТЬ ПО
	|				Приоритеты.Номенклатура) КАК МаксимальныеПриоритеты
	|			ПО Приоритеты.Номенклатура = МаксимальныеПриоритеты.Номенклатура
	|				И Приоритеты.Приоритет = МаксимальныеПриоритеты.Приоритет
	|		ПО ДанныеСчетов.Номенклатура = Приоритеты.Номенклатура
	|			И ДанныеСчетов.НомерСтроки = Приоритеты.НомерСтроки
	|			И ДанныеСчетов.ИмяТабличнойЧасти = Приоритеты.ИмяТабличнойЧасти";*/
			return null;
		}
		// Формирует временную таблицу ДанныеНастроекПараметровУчета содержащую параметры учета услуг
		//
		// Параметры
		//  МенеджерВременныхТаблиц - менеджер должен содержать временную таблицу ДанныеНоменклатуры содержащую список услуг,
		//  Организация - ссылка на организацию или массив организаций, по которым нужно получить параметры учета,
		//  Дата - дата на которую нужно получить параметры учета
		//

		public void СформироватьТаблицуПараметровУчетаУслуг(/*МенеджерВременныхТаблиц, Организация, Дата*/)
		{
			//Запрос = Новый Запрос();
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*Запрос.Текст = "
	|ВЫБРАТЬ
	|	ДанныеНоменклатурыУслуг.Номенклатура КАК Номенклатура,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Организация,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Номенклатура КАК НоменклатураНастройки,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.НомерСтроки КАК НомерСтроки,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Подразделение,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.ПодразделениеОрганизации,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.НоменклатурнаяГруппа,
	|" + ?(РасширеннаяАналитикаУчета.УчитыватьПродажиПоЗаказамПокупателей(), 
		   "УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.ВестиУчетЗатратПоЗаказам КАК ВестиУчетЗатратПоЗаказам",
		   "ЛОЖЬ КАК ВестиУчетЗатратПоЗаказам") + ",
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетЗатрат,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетДоходовБУ,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетРасходовБУ,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетЗатратНУ,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетДоходовНУ,
	|	УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.СчетРасходовНУ
	|ПОМЕСТИТЬ ДанныеСчетов
	|ИЗ
	|	Документ.УстановкаПараметровУчетаНоменклатуры.ПараметрыУчетаУслуг КАК УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеНоменклатуры КАК ДанныеНоменклатурыУслуг
	|		ПО (УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Номенклатура = Неопределено 
	|				ИЛИ УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Номенклатура = ДанныеНоменклатурыУслуг.ВидНоменклатуры
	|				ИЛИ УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Номенклатура = ДанныеНоменклатурыУслуг.Номенклатура
	|				)
	|			И ДанныеНоменклатурыУслуг.ВидНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)	
	|ГДЕ
	|	(УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Организация В (&Организация)
	|			ИЛИ УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Организация = Значение(Справочник.Организации.ПустаяСсылка))
	|	И УстановкаПараметровУчетаНоменклатурыПараметрыУчетаУслуг.Ссылка В
	|			("+ПолучитьТекстЗапросаДокументУстановкиПараметровУчетаНоменклатуры()+")
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеСчетов.Номенклатура КАК Номенклатура,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА ДанныеСчетов.Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
	|				ТОГДА 0
	|			ИНАЧЕ 1
	|		КОНЕЦ + ВЫБОР
	|			КОГДА ДанныеСчетов.НоменклатураНастройки = НЕОПРЕДЕЛЕНО
	|				ТОГДА 2
	|			КОГДА ДанныеСчетов.НоменклатураНастройки ССЫЛКА Справочник.ВидыНоменклатуры
	|				ТОГДА 4
	|			ИНАЧЕ 6
	|		КОНЕЦ) КАК Приоритет,
	|	ДанныеСчетов.НомерСтроки КАК НомерСтроки
	|ПОМЕСТИТЬ Приоритеты
	|ИЗ
	|	ДанныеСчетов КАК ДанныеСчетов
	|
	|СГРУППИРОВАТЬ ПО
	|	ДанныеСчетов.Номенклатура,
	|	ДанныеСчетов.НомерСтроки
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеСчетов.Номенклатура КАК Номенклатура,
	|	ДанныеСчетов.Подразделение КАК Подразделение,
	|	ДанныеСчетов.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
	|	ДанныеСчетов.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
	|	ДанныеСчетов.ВестиУчетЗатратПоЗаказам КАК ВестиУчетЗатратПоЗаказам,
	|	ДанныеСчетов.СчетЗатрат КАК СчетЗатрат,
	|	ДанныеСчетов.СчетЗатратНУ КАК СчетЗатратНУ,
	|	ДанныеСчетов.СчетРасходовБУ КАК СчетРасходовБУ,
	|	ДанныеСчетов.СчетРасходовНУ КАК СчетРасходовНУ,
	|	ДанныеСчетов.НоменклатураНастройки,
	|	ДанныеСчетов.НомерСтроки,
	|	ДанныеСчетов.Организация,
	|	Приоритеты.Приоритет
	|ПОМЕСТИТЬ ДанныеНастроекПараметровУчета
	|ИЗ
	|	ДанныеСчетов КАК ДанныеСчетов
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Приоритеты КАК Приоритеты
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|				Приоритеты.Номенклатура КАК Номенклатура,
	|				МАКСИМУМ(Приоритеты.Приоритет) КАК Приоритет
	|			ИЗ
	|				Приоритеты КАК Приоритеты
	|			
	|			СГРУППИРОВАТЬ ПО
	|				Приоритеты.Номенклатура) КАК МаксимальныеПриоритеты
	|			ПО Приоритеты.Номенклатура = МаксимальныеПриоритеты.Номенклатура
	|				И Приоритеты.Приоритет = МаксимальныеПриоритеты.Приоритет
	|		ПО ДанныеСчетов.Номенклатура = Приоритеты.Номенклатура
	|			И ДанныеСчетов.НомерСтроки = Приоритеты.НомерСтроки";*/
			//Запрос.УстановитьПараметр("Дата",Дата);
			if(true/*ТипЗНЧ(Организация) = Тип("СправочникСсылка.Организации")*/)
			{
				//МассивОрганизаций = Новый Массив;
				//МассивОрганизаций.Добавить(Организация);
				//Запрос.УстановитьПараметр("Организация",МассивОрганизаций);
			}
			//Запрос.Выполнить();
		}
		//Инициализирует структуру для хранения значений счетов учета номенклатуры.
		//Структура описывает все возможные счета учета, действующие для одинаковой номенклатуры в разных ситуациях.

		public object ПодготовитьСтруктуруСчетовУчета(/**/)
		{
			/*//Имена ключей выбраны по соответствию реквизитам документов
*/
			/*//В комментариях - ключи аналогичного значения в структуре, возвращаемой функцией ПолучитьСчетаУчетаНоменклатурыИзРегистраСведений()
*/
			//СтруктураСчетовУчета = Новый Структура();
			/*//Основной балансовый счет учета
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаБУ",					ПланыСчетов.Хозрасчетный.ПустаяСсылка());
			//СтруктураСчетовУчета.Вставить("СчетУчетаНУ",					ПланыСчетов.Налоговый.ПустаяСсылка());
			/*// Счет учета затрат (для услуг)
*/
			//СтруктураСчетовУчета.Вставить("СчетЗатрат",					    ПланыСчетов.Хозрасчетный.ПустаяСсылка());
			//СтруктураСчетовУчета.Вставить("СчетЗатратНУ",					ПланыСчетов.Налоговый.ПустаяСсылка());
			/*//Счет учета товаров в розничной торговле
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаБУРозницы",				ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговле);
			/*//41.02 	СчетУчетаРозницы
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаНУРозницы",				ПланыСчетов.Налоговый.ТоварыВРозничнойТорговле);
			/*//41.02 	СчетУчетаНУРозницы
*/
			/*//Принятые на комиссию
*/
			//СтруктураСчетовУчета.Вставить("ПринятыеСчетУчетаБУ",			ПланыСчетов.Хозрасчетный.ТоварыНаСкладе);
			/*//004.01	СчетУчетаДоп
*/
			//СтруктураСчетовУчета.Вставить("ПринятыеСчетУчетаНУ",			ПланыСчетов.Налоговый.ТоварыНаСкладе);
			/*//004.01	СчетУчетаДопНУ
*/
			/*//Переданные (отгруженные)
*/
			//СтруктураСчетовУчета.Вставить("ПереданныеСобственныеБУ",		ПланыСчетов.Хозрасчетный.ПрочиеТоварыОтгруженные);
			/*//45.03		СчетПередачиБУ
*/
			//СтруктураСчетовУчета.Вставить("ПереданныеСобственныеНУ",		ПланыСчетов.Налоговый.ПрочиеТоварыОтгруженные);
			/*//45.03		СчетПередачиНУ
*/
			/*//Принятые на комиссию и затем переданные
*/
			//СтруктураСчетовУчета.Вставить("ПереданныеПринятыеБУ",			ПланыСчетов.Хозрасчетный.ТоварыПереданныеНаКомиссию);
			/*//004.02	СчетПередачиЗабБУ
*/
			//СтруктураСчетовУчета.Вставить("ПереданныеПринятыеНУ",			ПланыСчетов.Налоговый.ТоварыПереданныеНаКомиссию);
			/*//004.02	СчетПередачиЗабНУ
*/
			/*//Доходы/расходы
*/
			//СтруктураСчетовУчета.Вставить("СчетДоходовБУ",					ПланыСчетов.Хозрасчетный.ВыручкаНеОблагаемаяЕНВД);
			/*//90.01.1
*/
			//СтруктураСчетовУчета.Вставить("СчетДоходовНУ",					ПланыСчетов.Налоговый.ВыручкаОтРеализацииТоваровРаботСобственногоПроизводства);
			/*//90.01.1
*/
			//СтруктураСчетовУчета.Вставить("СчетРасходовБУ",					ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеОблагаемаяЕНВД);
			/*//90.02.1
*/
			//СтруктураСчетовУчета.Вставить("СчетРасходовНУ",					ПланыСчетов.Налоговый.СебестоимостьПродаж);
			/*//90.02
*/
			/*//Для ЕНВД
*/
			//СтруктураСчетовУчета.Вставить("СчетДоходовБУРозницы",			ПланыСчетов.Хозрасчетный.ВыручкаНеОблагаемаяЕНВД);
			/*//90.01.1 СчетДоходовРознБУ
*/
			//СтруктураСчетовУчета.Вставить("СчетДоходовНУРозницы",			ПланыСчетов.Налоговый.ВыручкаОтРеализацииТоваровРаботСобственногоПроизводства);
			/*//90.01.1
*/
			//СтруктураСчетовУчета.Вставить("СчетРасходовБУРозницы",			ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеОблагаемаяЕНВД);
			/*//90.02.1 СчетРасходовРознБУ
*/
			//СтруктураСчетовУчета.Вставить("СчетРасходовНУРозницы",			ПланыСчетов.Налоговый.СебестоимостьПродаж);
			/*//90.02
*/
			/*//Пустые
*/
			//СтруктураСчетовУчета.Вставить("ПустойСчетБУ",								ПланыСчетов.Хозрасчетный.ПустаяСсылка());
			//СтруктураСчетовУчета.Вставить("ПустойСчетНУ",								ПланыСчетов.Налоговый.ПустаяСсылка());
			/*//Специальные
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаНДС",								ПланыСчетов.Хозрасчетный.ПустаяСсылка());
			//СтруктураСчетовУчета.Вставить("СчетУчетаНДСУслуги",							ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымУслугам);
			/*//19.04
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаНДСТаможни",						ПланыСчетов.Хозрасчетный.НДСуплачиваемыйТаможеннымОрганам);
			/*//19.05
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаНДСПоРеализации",					ПланыСчетов.Хозрасчетный.Продажи_НДС);
			/*//90.03
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаДавСырья",							ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку);
			/*//003.01
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаДавСырьяВПроизводстве",				ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработкуВПроизводстве);
			/*//003.02
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаПродукцииИзДавальческогоСырья",		ПланыСчетов.Хозрасчетный.ПроизводствоИзДавальческогоСырья);
			/*//20.02
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаПродукцииИзДавальческогоСырьяНУ",	ПланыСчетов.Налоговый.ПроизводствоИзДавальческогоСырья);
			/*//20.02
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаПереданногоСырья",					ПланыСчетов.Хозрасчетный.МатериалыПереданныеВПереработку);
			/*//10.07
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаПереданногоСырьяНУ",				ПланыСчетов.Налоговый.СырьеИМатериалыПереданныеВПереработку);
			/*//10.07.1
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаМатериалыВЭксплуатации",			ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежности);
			/*//10.09 (инвентарь)
*/
			//СтруктураСчетовУчета.Вставить("СчетУчетаМатериалыВЭксплуатацииНУ",			ПланыСчетов.Налоговый.ИнвентарьИХозяйственныеПринадлежности);
			/*//10.09 (инвентарь)
*/
			//СтруктураСчетовУчета.Вставить("ПринадлежностьНоменклатуры",					Перечисления.ПринадлежностьНоменклатуры.ПустаяСсылка());
			return null;
		}
		// Возвращает структуру счетов учета для указанной номенклатуры.
		// Таблица должна быть подготовлена заранее функцией ПолучитьСчетаУчетаНоменклатурыИзДокумента()

		public object ПолучитьСтруктуруСчетовУчета(/*Номенклатура, ТаблицаСчетовУчета, РозничнаяТорговляОблагаетсяЕНВД = Ложь*/)
		{
			//СтруктураСчетовУчета 	= ПодготовитьСтруктуруСчетовУчета();
			//УстановленныеСчета 		= ТаблицаСчетовУчета.Найти(Номенклатура, "Номенклатура");
			if(true/*УстановленныеСчета <> Неопределено*/)
			{
				/*//Дополним установленными счетами
*/
				//СтруктураСчетовУчета.СчетУчетаБУ    				= УстановленныеСчета.СчетУчетаБУ;
				//СтруктураСчетовУчета.СчетУчетаНУ    				= УстановленныеСчета.СчетУчетаНУ;
				//СтруктураСчетовУчета.СчетДоходовБУ  				= УстановленныеСчета.СчетДоходовБУ;
				//СтруктураСчетовУчета.СчетДоходовНУ  				= УстановленныеСчета.СчетДоходовНУ;
				//СтруктураСчетовУчета.СчетРасходовБУ 				= УстановленныеСчета.СчетРасходовБУ;
				//СтруктураСчетовУчета.СчетРасходовНУ 				= УстановленныеСчета.СчетРасходовНУ;
				//СтруктураСчетовУчета.ПринадлежностьНоменклатуры 	= УстановленныеСчета.ПринадлежностьНоменклатуры;
				//СтруктураСчетовУчета.СчетЗатрат    				    = УстановленныеСчета.СчетЗатрат;
				//СтруктураСчетовУчета.СчетЗатратНУ    				= УстановленныеСчета.СчетЗатратНУ;
				/*// Счета, зависящие от установленных
*/
				/*// Если розничная торговля облагается ЕНВД, то используются предопределенные счета доходов и расходов в рознице
*/
				if(true/*РозничнаяТорговляОблагаетсяЕНВД*/)
				{
					//СтруктураСчетовУчета.СчетДоходовБУРозницы  = ПланыСчетов.Хозрасчетный.ВыручкаОблагаемаяЕНВД;
					//СтруктураСчетовУчета.СчетРасходовБУРозницы = ПланыСчетов.Хозрасчетный.СебестоимостьПродажОблагаемаяЕНВД;
					//СтруктураСчетовУчета.СчетДоходовНУРозницы  = ПланыСчетов.Налоговый.РасходыПоДеятельностиЕНВД;
					//СтруктураСчетовУчета.СчетРасходовНУРозницы = ПланыСчетов.Налоговый.РасходыПоДеятельностиЕНВД;
				}
				/*//Счет учета переданных ТМЦ определяется основным счетом учета ТМЦ.
*/
				if(true/*УстановленныеСчета.СчетУчетаБУ = ПланыСчетов.Хозрасчетный.ГотоваяПродукция*/)
				{
					//СтруктураСчетовУчета.ПереданныеСобственныеБУ		= ПланыСчетов.Хозрасчетный.ГотоваяПродукцияОтгруженная;
					/*//45.02
*/
				}
				if(true/*УстановленныеСчета.СчетУчетаНУ = ПланыСчетов.Налоговый.ГотоваяПродукция*/)
				{
					//СтруктураСчетовУчета.ПереданныеСобственныеНУ  		= ПланыСчетов.Налоговый.ГотоваяПродукцияОтгруженная;
					/*//45.02
*/
				}
				/*//Если основной счет учета запасов - забалансовый, 
*/
				/*//то он будет использоваться в качестве счета учета принятых товаров.
*/
				if(true/*ЗабалансовыйСчет(СтруктураСчетовУчета.СчетУчетаБУ)*/)
				{
					//СтруктураСчетовУчета.ПринятыеСчетУчетаБУ = СтруктураСчетовУчета.СчетУчетаБУ;
					/*//При забалансовом счете БУ, счет НУ указывается только для комиссионного товара.
*/
					if(true/*СтруктураСчетовУчета.СчетУчетаНУ <> СтруктураСчетовУчета.ПринятыеСчетУчетаНУ*/)
					{
						//СтруктураСчетовУчета.ПринятыеСчетУчетаНУ = СтруктураСчетовУчета.ПустойСчетНУ;
					}
				}
				/*//Для прочих доходов счетом учета по НДС будет счет доходов,
*/
				/*//в остальных случаях - 90.03
*/
				if(true/*УстановленныеСчета.СчетДоходовБУ = ПланыСчетов.Хозрасчетный.ПрочиеДоходы*/)
				{
					//СтруктураСчетовУчета.СчетУчетаНДСПоРеализации	= УстановленныеСчета.СчетРасходовБУ;
				}
				/*//Счет 10.10 используется в паре с 10.11, в остальных случаях счет учета материалов в эксплуатации (инвентаря) - 10.09
*/
				if(true/*УстановленныеСчета.СчетУчетаБУ = ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаНаСкладе*/)
				{
					//СтруктураСчетовУчета.СчетУчетаМатериалыВЭксплуатации	= ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаВЭксплуатации;
					/*//10.11
*/
				}
				if(true/*УстановленныеСчета.СчетУчетаНУ = ПланыСчетов.Налоговый.СпецоснасткаИСпецодеждаНаСкладе*/)
				{
					//СтруктураСчетовУчета.СчетУчетаМатериалыВЭксплуатацииНУ	= ПланыСчетов.Налоговый.СпецоснасткаИСпецодеждаВЭксплуатации;
					/*//10.11
*/
				}
			}
			return null;
		}
		// Функция возвращает счета учета номенклатры по выбранной организации.
		//
		// Параметры:
		//  Организация         - организация, по которой определяются счета учета
		//  Номенклатура        - номенклатура, по которой определяются счета учета
		//
		// Возвращаемое значение:
		//  Структура - структура содержащая счета учета расчетов
		//

		public object ПолучитьСчетаУчетаНоменклатурыИзРегистраСведений(/*Организация, Номенклатура, Склад = Неопределено*/)
		{
			/*СтруктураВозврата = Новый Структура("СчетУчетаБУ, СчетУчетаНУ, СчетУчетаНДС, СчетНДСТаможни, СчетУчетаРозницы, СчетУчетаДавСырья,
	                                    |СчетУчетаДоп, СчетУчетаНУРозницы, СчетДоходовБУ, СчетДоходовНУ,
	                                    |СчетПередачиБУ, СчетПередачиЗабБУ, СчетПередачиНУ,
	                                    |СчетДоходовРознБУ, СчетРасходовРознБУ, СчетРасходовБУ, СчетРасходовНУ,
										|СчетУчетаДопНУ, СчетПередачиЗабНУ,
										|ПринадлежностьНоменклатуры");*/
			if(true/*НЕ ЗначениеЗаполнено(Номенклатура)*/)
			{
			}
			//МассивСклад			 = Новый Массив();
			//МассивНоменклатура	 = Новый Массив();
			//МассивВидНоменклатуры= Новый Массив();
			//МассивОрганизация	 = Новый Массив();
			//МассивСклад.Добавить(Справочники.Склады.ПустаяСсылка());
			//МассивОрганизация.Добавить(Справочники.Организации.ПустаяСсылка());
			//МассивНоменклатура.Добавить(Справочники.Номенклатура.ПустаяСсылка());
			//МассивНоменклатура.Добавить(Справочники.ВидыНоменклатуры.ПустаяСсылка());
			//МассивНоменклатура.Добавить(НЕОПРЕДЕЛЕНО);
			//МассивНоменклатура.Добавить(Номенклатура);
			//СписокГрупп = ОбщегоНазначения.ПолучитьСписокВышестоящихГрупп(Номенклатура);
			//МассивНоменклатура.Добавить(Номенклатура.ВидНоменклатуры);
			//МассивОрганизация.Добавить(Организация);
			//МассивСклад.Добавить(Склад);
			//Запрос = Новый Запрос();
			//Запрос.УстановитьПараметр("Организация",        МассивОрганизация);
			//Запрос.УстановитьПараметр("Номенклатура",       МассивНоменклатура);
			//Запрос.УстановитьПараметр("Склад",			    МассивСклад);
			//Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка());
			//Запрос.УстановитьПараметр("ПустойВид",			Справочники.ВидыНоменклатуры.ПустаяСсылка());
			/*Запрос.Текст = "
	|ВЫБРАТЬ
	|	СчетаУчетаНоменклатуры.Организация КАК Организация,
	|	ВЫБОР КОГДА СчетаУчетаНоменклатуры.Номенклатура ССЫЛКА Справочник.Номенклатура ТОГДА
	|		СчетаУчетаНоменклатуры.Номенклатура ИНАЧЕ &ПустаяНоменклатура КОНЕЦ КАК Номенклатура,
	|	ВЫБОР КОГДА СчетаУчетаНоменклатуры.Номенклатура ССЫЛКА Справочник.Номенклатура ТОГДА
	|		СчетаУчетаНоменклатуры.Номенклатура.ЭтоГруппа ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ЭтоГруппа,
	|	ВЫБОР КОГДА СчетаУчетаНоменклатуры.Номенклатура ССЫЛКА Справочник.ВидыНоменклатуры ТОГДА
	|		СчетаУчетаНоменклатуры.Номенклатура ИНАЧЕ &ПустойВид КОНЕЦ КАК ВидНоменклатуры,
	|	СчетаУчетаНоменклатуры.Склад КАК Склад,
	|	СчетаУчетаНоменклатуры.СчетУчетаБУ КАК СчетУчетаБУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаВРозницеБУ КАК СчетУчетаВРозницеБУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаНДС КАК СчетУчетаНДС,
	|	СчетаУчетаНоменклатуры.СчетУчетаНДСУплаченногоНаТаможне КАК СчетУчетаНДСУплаченногоНаТаможне,
	|	СчетаУчетаНоменклатуры.СчетУчетаЗабалансовыйБУ КАК СчетУчетаЗабалансовыйБУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаВРозницеНУ КАК СчетУчетаВРозницеНУ,
	|	СчетаУчетаНоменклатуры.СчетДоходовОтРеализацииБУ КАК СчетДоходовОтРеализацииБУ,
	|	СчетаУчетаНоменклатуры.СчетДоходовОтРеализацииНУ КАК СчетДоходовОтРеализацииНУ,
	|	СчетаУчетаНоменклатуры.СчетДоходовВРозницеБУ КАК СчетДоходовВРозницеБУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаНУ КАК СчетУчетаНУ,
	|	СчетаУчетаНоменклатуры.СчетРасходовВРозницеБУ КАК СчетРасходовВРозницеБУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаПередачиБУ КАК СчетУчетаПередачиБУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаПередачиЗабалансовыйБУ КАК СчетУчетаПередачиЗабалансовыйБУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаПередачиНУ КАК СчетУчетаПередачиНУ,
	|	СчетаУчетаНоменклатуры.СчетРасходовБУ КАК СчетРасходовБУ,
	|	СчетаУчетаНоменклатуры.СчетРасходовНУ КАК СчетРасходовНУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаЗабалансовыйНУ КАК СчетУчетаЗабалансовыйНУ,
	|	СчетаУчетаНоменклатуры.СчетУчетаПередачиЗабалансовыйНУ КАК СчетУчетаПередачиЗабалансовыйНУ,
	|	СчетаУчетаНоменклатуры.ПринадлежностьНоменклатуры КАК ПринадлежностьНоменклатуры
	|ИЗ
	|	РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры
	|	
	|ГДЕ
	|	СчетаУчетаНоменклатуры.Организация В (&Организация)
	|	И СчетаУчетаНоменклатуры.Номенклатура В (&Номенклатура) 
	|	И СчетаУчетаНоменклатуры.Склад В (&Склад)";*/
			//ТаблицаЗапроса = Запрос.Выполнить().Выгрузить();
			//ТаблицаЗапроса.Колонки.Добавить("Глубина");
			//ТаблицаЗапроса.Сортировать("Глубина Убыв, ВидНоменклатуры Убыв, Склад Убыв, Организация Убыв");
			if(true/*ТаблицаЗапроса.Количество() > 0*/)
			{
				//СведенияОСчетах = ТаблицаЗапроса[0];
				if(true/*НЕ Номенклатура.Услуга*/)
				{
					//СтруктураВозврата.СчетУчетаБУ        = СведенияОСчетах.СчетУчетаБУ;
					//СтруктураВозврата.СчетУчетаНУ        = СведенияОСчетах.СчетУчетаНУ;
					//СтруктураВозврата.СчетНДСТаможни     = СведенияОСчетах.СчетУчетаНДСУплаченногоНаТаможне;
					//СтруктураВозврата.СчетУчетаРозницы   = СведенияОСчетах.СчетУчетаВРозницеБУ;
					//СтруктураВозврата.СчетУчетаДоп       = СведенияОСчетах.СчетУчетаЗабалансовыйБУ;
					//СтруктураВозврата.СчетУчетаДавСырья  = СведенияОСчетах.СчетУчетаЗабалансовыйБУ;
					//СтруктураВозврата.СчетУчетаНУРозницы = СведенияОСчетах.СчетУчетаВРозницеНУ;
					//СтруктураВозврата.СчетПередачиБУ     = СведенияОСчетах.СчетУчетаПередачиБУ;
					//СтруктураВозврата.СчетПередачиЗабБУ  = СведенияОСчетах.СчетУчетаПередачиЗабалансовыйБУ;
					//СтруктураВозврата.СчетПередачиНУ     = СведенияОСчетах.СчетУчетаПередачиНУ;
					//СтруктураВозврата.СчетУчетаДопНУ     = СведенияОСчетах.СчетУчетаЗабалансовыйНУ;
					//СтруктураВозврата.СчетПередачиЗабНУ  = СведенияОСчетах.СчетУчетаПередачиЗабалансовыйНУ;
				}
				//СтруктураВозврата.СчетУчетаНДС   = СведенияОСчетах.СчетУчетаНДС;
				//СтруктураВозврата.СчетДоходовБУ  = СведенияОСчетах.СчетДоходовОтРеализацииБУ;
				//СтруктураВозврата.СчетДоходовНУ  = СведенияОСчетах.СчетДоходовОтРеализацииНУ;
				//СтруктураВозврата.СчетРасходовБУ = СведенияОСчетах.СчетРасходовБУ;
				//СтруктураВозврата.СчетРасходовНУ = СведенияОСчетах.СчетРасходовНУ;
				//СтруктураВозврата.СчетДоходовРознБУ  = СведенияОСчетах.СчетДоходовВРозницеБУ;
				//СтруктураВозврата.СчетРасходовРознБУ = СведенияОСчетах.СчетРасходовВРозницеБУ;
				//СтруктураВозврата.ПринадлежностьНоменклатуры = СведенияОСчетах.ПринадлежностьНоменклатуры;
			}
			return null;
		}
		// ПолучитьСчетаУчетаНоменклатурыИзРегистраСведений()
		//Возвращает таблицу значений с данными счетов для указанной номенклатуры, полученных из документа УстановкаПараметровУчетаНоменклатуры.
		//

		public object ПолучитьСчетаУчетаНоменклатурыИзДокумента(/*Организация, Дата, СписокНоменклатуры*/)
		{
			//ТекстЗапроса = ПолучитьТекстЗапросаСчетовУчетаНоменклатуры();
			//Запрос = Новый Запрос(ТекстЗапроса);
			//Запрос.УстановитьПараметр("Организация",		Организация);
			//Запрос.УстановитьПараметр("Дата",				Дата);
			//Запрос.УстановитьПараметр("СписокНоменклатуры",	СписокНоменклатуры);
			//ТаблицаУстановленныхСчетов = Запрос.Выполнить().Выгрузить();
			//ТаблицаУстановленныхСчетов.Индексы.Добавить("Номенклатура");
			return null;
		}
		//Возвращает структуру счетов для указанной номенклатуры.
		//Возвращаются все счета, определенные для номенклатуры, для всех хозяйственных ситуаций.
		//В дальнейшем планируется сделать эту функцию не-экспортной.

		public object ПолучитьСчетаУчетаНоменклатурыИзНастроек(/*Организация, Номенклатура, Склад, Дата*/)
		{
			if(true/*ИспользоватьОпределениеСчетовПриПроведенииДокументов(Дата)*/)
			{
				//УстановленныеСчета 		= ПолучитьСчетаУчетаНоменклатурыИзДокумента(Организация, Дата, Номенклатура);
				//СтруктураСчетовУчета	= ПолучитьСтруктуруСчетовУчета(Номенклатура, УстановленныеСчета, РозничнаяТорговляОблагаетсяЕНВД(Организация, Дата));
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		//
		// ОБЩИЕ ПРОЦЕДУРЫ РАБОТЫ СО СЧЕТАМИ В ДОКУМЕНТАХ
		//
		//Возвращает признак использования определения счетов при проведении документов на указанную дату
		//Если значение параметра Дата не заполнено, то возвращается признак на "сейчас".

		public object ИспользоватьОпределениеСчетовПриПроведенииДокументов(/*Дата=Неопределено*/)
		{
			//ДатаНачала = глЗначениеПеременной("ДатаНачалаОпределенияСчетовПриПроведенииДокументов");
			if(true/*НЕ ЗначениеЗаполнено(Дата)*/)
			{
				/*//возвращаем состояние режима на "сейчас", т.е. включен режим или нет "вообще", без учета даты.
*/
			}
			return null;
		}
		//Возвращает дату, с которой действует режим "Счета учета номенклатуры определяются при проведении документа".
		//Возвращает Неопределено, если режим не установлен.
		//
		//Параметры:
		//
		//	ИсключитьДокумент - ссылка на документ УстановкаПараметровУчетаНоменклатуры, который не надо учитывать при определении даты начала действия режима.

		public object ПолучитьДатуПервогоДокументаУстановкиСчетовУчетаНоменклатуры(/*ИсключитьДокумент=неопределено*/)
		{
			//Запрос = Новый Запрос;
			/*Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
	|				УстановкаПараметровУчетаНоменклатуры.Дата КАК Дата
	|			ИЗ
	|				Документ.УстановкаПараметровУчетаНоменклатуры КАК УстановкаПараметровУчетаНоменклатуры
	|			ГДЕ
	|				УстановкаПараметровУчетаНоменклатуры.Проведен И (&Ссылка=Неопределено ИЛИ УстановкаПараметровУчетаНоменклатуры.Ссылка<>&Ссылка)
	|			УПОРЯДОЧИТЬ ПО
	|				УстановкаПараметровУчетаНоменклатуры.Дата ВОЗР";*/
			//Запрос.УстановитьПараметр("Ссылка",ИсключитьДокумент);
			//РезультатЗапроса = Запрос.Выполнить();
			if(true/*РезультатЗапроса.Пустой()*/)
			{
			}
			return null;
		}
		// Возвращает таблицу, описывающую реквизиты табличной части (или документа, если ИмяТабличнойЧасти - пустое),
		// используемые для указания счетов учета и связанные реквизиты.
		// Данные получает из макета "СчетаУчетаВДокументах"
		// Параметры:
		//  ИмяДокумента       - имя документа
		//  ИмяТабличнойЧасти  - имя табличной части

		public object ПолучитьРеквизитыСчетовУчета(/*ИмяДокумента, ИмяТабличнойЧасти*/)
		{
			//Макет = ПолучитьОбщийМакет("СчетаУчетаВДокументах");
			//ПостроительЗапроса = Новый ПостроительЗапроса;
			//ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Макет.Область("ОписаниеСчетовУчета"));
			/*// Установим отборы
*/
			//УстановитьОтборПоПолю(ПостроительЗапроса, "Документ",       ИмяДокумента);
			//УстановитьОтборПоПолю(ПостроительЗапроса, "ТабличнаяЧасть", ИмяТабличнойЧасти);
			/*// Возвращаем таблицу значений с отобранными из макета данными 
*/
			//ПостроительЗапроса.Выполнить();
			return null;
		}
		// Устанавливает отбор на равенство по полю построителя запроса
		//

		public void УстановитьОтборПоПолю(/*ПостроительЗапроса, ИмяПоляОтбора, ЗначениеОтбора*/)
		{
			//ПолеДокумент 		= ПостроительЗапроса.ДоступныеПоля.Добавить(ИмяПоляОтбора, ИмяПоляОтбора);
			//ПолеДокумент.Отбор 	= Истина;
			//ЭлементОтбора		= ПостроительЗапроса.Отбор.Добавить(ИмяПоляОтбора);
			//ЭлементОтбора.Установить(ЗначениеОтбора);
		}
		//Возвращает структуру, содержащую список имен реквизитов,
		//используемых для указания счетов налогового учета и связанных реквизитов

		public object ПолучитьРеквизитыСчетовНалоговогоУчета(/**/)
		{
			return null;
		}
		// Возвращает структуру, содержащую список имен реквизитов - счетов затрат
		// В качестве Значений содержатся данные об источниках заполнения счетов:
		// ключ структуры, возвращаемой ПолучитьСчетаУчетаСтатьиЗатрат()

		public object РеквизитыСчетаЗатрат(/**/)
		{
			//РеквизитыСчетаЗатрат	= Новый Структура();
			//РеквизитыСчетаЗатрат.Вставить("СчетЗатрат",   "СчетУчетаБУ");
			//РеквизитыСчетаЗатрат.Вставить("СчетЗатратНУ", "СчетУчетаНУ");
			return null;
		}
		// Возвращает структуру, содержащую список имен реквизитов - субконто затрат.
		// Ключ     - имя реквизита
		// Значение - номер субконто (нумерация - с 1)

		public object РеквизитыСубконтоЗатрат(/**/)
		{
			//РеквизитыСубконтоЗатрат = Новый Структура();
			//РеквизитыСубконтоЗатрат.Вставить("Субконто1",   1);
			//РеквизитыСубконтоЗатрат.Вставить("Субконто2",   2);
			//РеквизитыСубконтоЗатрат.Вставить("Субконто3",   3);
			//РеквизитыСубконтоЗатрат.Вставить("СубконтоНУ1", 1);
			//РеквизитыСубконтоЗатрат.Вставить("СубконтоНУ2", 2);
			//РеквизитыСубконтоЗатрат.Вставить("СубконтоНУ3", 3);
			return null;
		}
		//Возвращает признак "Забалансовый" переданного счета учета
		//

		public object ЗабалансовыйСчет(/*Счет*/)
		{
			return null;
		}
		//Функция проверяет, выполняется ли для переданного значения счета условие балансовости,
		//которое должно применяться для этого реквизита в данной хоз.ситуации.
		//Возвращает Истина, если счет соответствует условию.
		//Параметры
		//	Значение 				- проверяемое значение счета
		//	ДанныеРеквизита			- строка таблицы значений с данными макета СчетаУчетаВДокументах
		//	ХозяйственнаяСитуация	- строка, описывающая отражаемую хозяйственную ситуацию (имя одной из колонок раздела "Хозяйственные ситуации" в макете СчетаУчетаВДокументах)
		//	ДолженБытьЗабалансовым	- переменная, в которую будет возвращено требование к счету
		//								Истина 			- счет должен быть забалансовым
		//								Ложь			- счет должен быть балансовым
		//								Неопределено	- проверка не требуется или не может быть выполнена

		public object ПроверитьБалансовостьСчета(/*Значение, ДанныеРеквизита, ХозяйственнаяСитуация, ДолженБытьЗабалансовым = Неопределено*/)
		{
			//ДолженБытьЗабалансовым = Неопределено;
			if(true/*ПустаяСтрока(ДанныеРеквизита.Забалансовый)*/)
			{
				/*//не требуется проверка
*/
			}
			if(true/*НЕ ЗначениеЗаполнено(Значение)*/)
			{
				/*//нечего проверять
*/
			}
			if(true/*ВРег(ДанныеРеквизита.Забалансовый)="ДА"*/)
			{
				//ДолженБытьЗабалансовым 	= Истина;
			}
			//Возврат ЗабалансовыйСчет(Значение) = ДолженБытьЗабалансовым;
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		//
		// ЗАПОЛНЕНИЕ СЧЕТОВ УЧЕТА В ДОКУМЕНТАХ
		//
		//Возвращает таблицу значений с информацией о том, какие склады нужно использовать для определения счетов учета в документе
		//Параметры:
		//		Объект - ДокументОбъект
		//		ТаблицаРеквизитов - таблица с данными макета СчетаУчетаВДокументах

		public object ПодготовитьТаблицуСкладов(/*Объект, ТаблицаРеквизитов*/)
		{
			/*//Подготовим таблицу с информацией о складах
*/
			//ТаблицаСкладов = ТаблицаРеквизитов.Скопировать();
			//ТаблицаСкладов.Свернуть("СкладШапки, СкладТабличнойЧасти, ПриходныйОрдерШапки, ПриходныйОрдерТабличнойЧасти");
			//ТаблицаСкладов.Колонки.Добавить("Склад", 			Новый ОписаниеТипов("СправочникСсылка.Склады"));
			//ТаблицаСкладов.Колонки.Добавить("СкладДокумента", 	Новый ОписаниеТипов("СправочникСсылка.Склады"));
			//ТаблицаСкладов.Колонки.Добавить("Розничный",		Новый ОписаниеТипов("Булево"));
			return null;
		}
		// Устанавливает значения счетов учета номенклатуры в переданной строке табличной части или "шапке" документа.
		// Также заполняются значения субконто, зависящие от установленных счетов.
		//
		// Параметры:
		//	ЗаполняемыйОбъект 		- строка табличной части, строка таблицы значений, структура шапки документа или ДокументОбъект
		//	ТаблицаРеквизитов 		- таблица, возвращаемая функцией ПолучитьРеквизитыСчетовУчета() и содержащая сведения о заполняемых реквизитах
		//	СтруктураСчетовУчета 	- структура, содержащая значения счетов
		//	ХозяйственнаяСитуация	- строка, описывающая отражаемую хозяйственную ситуацию (имя одной из колонок раздела "Хозяйственные ситуации" в макете СчетаУчетаВДокументах)
		//	ДанныеСклада 			- строка таблицы, возвращаемой функцией ПодготовитьТаблицуСкладов() Если значение передано, то будут заполнены только те счета, которые соответствуют переданным складам.
		//	РозничныйСклад			- флаг, показывающий что нужно заменять счета учета на счета в рознице.
		//								Может быть равен Неопределено, если для заполнения передается СтруктураШапкиДокумента или СтрокаТабличнойЧасти.
		//								В этом случае переданная для заполнения структура должна содержать информацию о виде склада, см. описание функции НуженРозничныйСчет()
		//	Перезаполнять			- если Ложь, то будут заполнены только незаполненные значения

		public void УстановитьСчетаУчета(/*ЗаполняемыйОбъект, ТаблицаРеквизитов, СтруктураСчетовУчета, ХозяйственнаяСитуация, ДанныеСклада = Неопределено, РозничныйСклад=Неопределено, ЗаполнятьБУ=Истина, ЗаполнятьНУ=Истина, Перезаполнять=Ложь, ЗаполнятьКлоныКолонок=Истина*/)
		{
			/*// Определим, работаем с отбором реквизитов по складам или нет
*/
			if(true/*ДанныеСклада = Неопределено*/)
			{
				//СтрокиРеквизитов = ТаблицаРеквизитов;
			}
			/*// Заполняем выбранные по складам реквизиты
*/
			//СчетаНУ			        = ПолучитьРеквизитыСчетовНалоговогоУчета();
			//РеквизитыСчетаЗатрат    = РеквизитыСчетаЗатрат();
			//РеквизитыСубконтоЗатрат = РеквизитыСубконтоЗатрат();
			/*// Ключи 	- имена реквизитов субконто, 
*/
			/*// Значения 	- структуры с ключами 
*/
			/*//		"Счет" 			- имя счета, к которому относится субконто
*/
			/*//		"Номенклатура" 	- имя реквизита номенклатуры, 
*/
			/*//							по которому определяется субконто НоменклатурнаяГруппа.
*/
			/*//							Берется из макета, может быть пустым.
*/
			//Субконто		= Новый Структура();
			/*// Заполняем субконто. Они зависят от установленных счетов доходов.
*/
			/*// Заполняем клоны колонок
*/
			if(true/*ЗаполнятьКлоныКолонок*/)
			{
			}
		}
		// Устанавливает значения счетов учета затрат в переданной строке табличной части или "шапке" документа.
		//
		// Параметры:
		//  ЗаполняемыйОбъект       - строка табличной части, строка таблицы значений, структура шапки документа или ДокументОбъект
		//  ТаблицаРеквизитов       - таблица, возвращаемая функцией ПолучитьРеквизитыСчетовУчета() и содержащая сведения о заполняемых реквизитах объекта
		//  СтруктураШапкиДокумента - структура шапки документа или ДокументОбъект, 		источник данных для определения счетов
		//  ДанныеСтроки            - строка табличной части или строка таблицы значений, 	источник данных для определения счетов
		//  Перезаполнять           - если Ложь, то будут заполнены только незаполненные значения

		public void УстановитьСчетаЗатрат(/*ЗаполняемыйОбъект, ТаблицаРеквизитов, ХозяйственнаяСитуация, СтруктураШапкиДокумента, ДанныеСтроки=Неопределено, Перезаполнять=Ложь*/)
		{
			/*// Определим, какие реквизиты будем заполнять.
*/
			/*// Ключ - "каноническое" имя источника данных для заполнения, 
*/
			/*// значение - ключ структуры, возвращаемой ПолучитьСчетаУчетаСтатьиЗатрат()
*/
			//ИсточникиЗаполнения	= РеквизитыСчетаЗатрат();
			/*// Определим, какие реквизиты будут источником для определения счетов
*/
			//РеквизитыИсточникаОпределенияСчетов = "ПодразделениеШапки,СтатьяЗатратШапки";
			if(true/*ДанныеСтроки <> Неопределено*/)
			{
				//РеквизитыИсточникаОпределенияСчетов = РеквизитыИсточникаОпределенияСчетов + ",ПодразделениеТабличнойЧасти,СтатьяЗатратТабличнойЧасти";
			}
			/*// Определим реквизиты, которые относятся к счетам учета затрат. Составим таблицу с данными таких реквизитов - часть таблицы ТаблицаРеквизитов.
*/
			//ТаблицаЗаполняемыхРеквизитов = Новый ТаблицаЗначений();
			//ТаблицаЗаполняемыхРеквизитов.Колонки.Добавить("Реквизит");
			/*// Имя реквизита
*/
			//ТаблицаЗаполняемыхРеквизитов.Колонки.Добавить("Источник");
			/*// Источник заполнения, ключ структуры, возвращаемой ПолучитьСчетаУчетаСтатьиЗатрат()
*/
			/*// Также в колонки таблицы добавим данные об источнике определения счета
*/
			/*// Заполнение таблицы с данными только о счетах затрат
*/
			if(true/*ТаблицаЗаполняемыхРеквизитов.Количество() = 0*/)
			{
				/*//ничего не надо заполнять
*/
			}
			/*// Для одного объекта может понадобиться получать счета затрат в разных ситуациях: 
*/
			/*// значения разных реквизитов со счетами могут зависеть от значений разных реквизитов шапки и табличной части.
*/
			/*// Поэтому составим перечень сочетаний таких реквизитов и для каждого из сочетаний будем определять значения счетов.
*/
			//ИсточникиОпределенияСчетов = ТаблицаЗаполняемыхРеквизитов.Скопировать();
			//ИсточникиОпределенияСчетов.Свернуть(РеквизитыИсточникаОпределенияСчетов);
			//СтруктураОтбора = Новый Структура(РеквизитыИсточникаОпределенияСчетов);
			/*// Также используется для определения перечня используемых реквизитов источника.
*/
		}
		// Устанавливает значения субконто "Статьи затрат" в переданной строке табличной части или таблицы значений
		//
		// Параметры:
		//  ДанныеСтроки            - строка табличной части, строка таблицы значений
		//  ТаблицаРеквизитов       - таблица, возвращаемая функцией ПолучитьРеквизитыСчетовУчета() и содержащая сведения о заполняемых реквизитах объекта
		//

		public void УстановитьСубконтоЗатрат(/*ДанныеСтроки, ТаблицаРеквизитов*/)
		{
			/*// В некоторых случаях для правильной работы смежных механизмов, 
*/
			/*// таких как учет НДС или налоговый учет требуется, чтобы
*/
			/*// в реквизите СубконтоХ (обычно - Субконто2) была заполнена статья затрат.
*/
			/*// Эту статью затрат можно получить из одноименного реквизита табличной части.
*/
			/*// Заполняются статьей затрат реквизиты, для которых выполняются условия:
*/
			/*// - описан в макете СчетаУчетаВДокументах
*/
			/*// - имя реквизита - одно из перечисленных в функции РеквизитыСубконтоЗатрат() (Субконто1, Субконто2 ... )
*/
			/*// - в колонке СтатьяЗатратТабличнойЧасти макета СчетаУчетаВДокументах указан источник заполнения
*/
			/*// - в строке табличной части заполнен счет затрат (имена счетов - в колонке СчетЗатрат макета)
*/
			/*// - тип соответствующего субконто на этом счете - ссылка на справочник СтатьиЗатрат
*/
			//РеквизитыСубконтоЗатрат = РеквизитыСубконтоЗатрат();
			//ВидСубконтоСтатьиЗатрат    = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат;
			/*// Для планов счетов Хозрасчетный и Налоговый используется общий план видов характеристик
*/
		}
		// Устанавливает значения субконто "Подразделения" в переданной строке табличной части или таблицы значений
		//
		// Параметры:
		//  ДанныеСтроки            - строка табличной части, строка таблицы значений
		//  ТаблицаРеквизитов       - таблица, возвращаемая функцией ПолучитьРеквизитыСчетовУчета() и содержащая сведения о заполняемых реквизитах объекта
		//  СтруктураШапкиДокумента - структура шапки документа
		//

		public void УстановитьСубконтоПодразделение(/*ДанныеСтроки, ТаблицаРеквизитов, СтруктураШапкиДокумента*/)
		{
			//РеквизитыСубконтоЗатрат = РеквизитыСубконтоЗатрат();
			//ВидСубконтоПодразделения = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Подразделения;
		}
		// Функция возвращает признак необходимости установки субконто по номеру и виду
		//

		public object ПроверитьНеобходимостьУстановкиСубконто(/*Счет, НомерСубконто, ВидСубконто*/)
		{
			//ВидыСубконтоНаСчете = Счет.ВидыСубконто;
			if(true/*ВидыСубконтоНаСчете.Количество() < НомерСубконто*/)
			{
				/*// Субконто с таким номером у счета нет
*/
			}
			if(true/*ВидыСубконтоНаСчете[НомерСубконто - 1].ВидСубконто <> ВидСубконто*/)
			{
				/*// Субконто неподходящего вида.
*/
			}
			return null;
		}
		// Процедура устанавливает значение субконто по данным реквизита строки или шапки документа
		//

		public void УстановитьСубконто(/*
		ИмяСубконто, 
		ИмяРеквизитаШапки = Неопределено, 
		ИмяРеквизитаТабличнойЧасти = Неопределено,
		СтруктураШапкиДокумента = Неопределено,
		ДанныеСтроки = Неопределено*/)
		{
			if(true/*НЕ ЗначениеЗаполнено(ИмяРеквизитаШапки) 
		 И НЕ (ЗначениеЗаполнено(ИмяРеквизитаТабличнойЧасти))*/)
			{
				/*// Не указан источник заполнения
*/
			}
			//ЗначениеСубконто = Неопределено;
			if(true/*ЗначениеЗаполнено(ИмяРеквизитаШапки)
		 И ЗначениеЗаполнено(СтруктураШапкиДокумента)*/)
			{
				//ЗначениеСубконто = СтруктураШапкиДокумента[ИмяРеквизитаШапки];
			}
			if(true/*ЗначениеЗаполнено(ИмяРеквизитаТабличнойЧасти)
		 И ЗначениеЗаполнено(ДанныеСтроки)*/)
			{
				//ЗначениеСубконто = ДанныеСтроки[ИмяРеквизитаТабличнойЧасти];
			}
			if(true/*ЗначениеЗаполнено(ЗначениеСубконто) 
		И ДанныеСтроки[ИмяСубконто] <> ЗначениеСубконто*/)
			{
				//ДанныеСтроки[ИмяСубконто] = ЗначениеСубконто;
			}
		}
		// Подготавливает структуру счетов расчетов с контрагентов по данным настроек
		// Используется в функциях ЗаполнитьСтруктуруСчетовУчетаШапки() модулей документов.
		// Непосредственное получение данных о счетах выполняется в БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом()
		//
		// Параметры:
		//  Организация,
		//  Контрагент,
		//  ДоговорКонтрагента  - условия, для которых будут получены настройки счетов учета расчетов.
		//  СтруктураРеквизитов - структура
		//   ключи - имена реквизитов,
		//   значения - имена соответствующих им настроек (см. БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом().
		//
		// Возвращаемое значение:
		//  Структура. Ключи - имена реквизитов, значения - значения, установленные в настройке счетов учета расчетов.
		//  Структура содержит только ключи, для которых выполнены настройки:
		//  - если настройки не выполнены, то структура не будет содержать ключ
		//  - если выполнена настройка и в настройке указано пустое значение - то структура будет
		//    содержать соответствующий ключ с пустым значением.

		public object ЗаполнитьСтруктуруСчетовРасчетовСКонтрагентом(/*Организация, Контрагент, ДоговорКонтрагента, СтруктураРеквизитов*/)
		{
			//СчетаУчета = БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом(Организация, Контрагент, ДоговорКонтрагента);
			//СтруктураВозврата = Новый Структура();
			return null;
		}
		//ЗАПОЛНЕНИЕ для режима, когда НЕ используется определение счетов при проведении документов
		// Определяет, надо ли заполнять счета учета при вводе документов
		//
		// Параметры
		//  Дата - дата документа
		//
		// Возвращаемое значение
		//  Истина - заполнять счета учета в документе требуется
		//  Ложь   - заполнять счета учета в документе НЕ требуется

		public object ЗаполнятьСчетаУчетаВДокументах(/*Дата*/)
		{
			if(true/*НЕ ИспользоватьОпределениеСчетовПриПроведенииДокументов(Дата)*/)
			{
				/*// Счета берем из регистра сведений, заполняем в документах всегда
*/
			}
			/*// Проверим, стоит ли флаг ЗаполнятьСчетаУчетаВДокументах в предыдущем документе УстановкаПараметровУчетаНоменклатуры
*/
			//Запрос = Новый Запрос(ПолучитьТекстЗапросаДокументУстановкиПараметровУчетаНоменклатуры(Новый Структура("ЗаполнятьСчетаУчетаВДокументах")));
			//Запрос.УстановитьПараметр("Дата", Дата);
			//Выборка = Запрос.Выполнить().Выбрать();
			if(true/*НЕ Выборка.Следующий()*/)
			{
				/*// Такое может быть, только если в другом сеансе изменили документ УстановкаПараметровУчетаНоменклатуры,
*/
				/*// т.к. если ИспользоватьОпределениеСчетовПриПроведенииДокументов() = Истина, то документ до этой даты должен быть.
*/
				/*//Все равно корректно заполнить не сможем
*/
			}
			return null;
		}
		//Заполняет счета учета номенклатуры и затрат в строке табличной части или табличной части.
		//Параметры:
		//	ДанныеТабличнойЧасти 		- строка табличной части или табличная часть
		//	Объект				 		- ДокументОбъект
		//	ЗаполнятьВЛюбомРежиме		- счета учета будут заполнены независимо от режима "Определять счета при проведении".

		public void ЗаполнитьСчетаУчетаТабличнойЧасти(/*ИмяТабличнойЧасти, ДанныеТабличнойЧасти, Объект, ЗаполнятьБУ=Истина, ЗаполнятьНУ=Истина, ЗаполнятьСчетаЗатрат=Истина, ЗаполнятьСчетаНоменклатуры=Истина, ЗаполнятьВЛюбомРежиме=Ложь*/)
		{
			if(true/*НЕ ЗаполнятьВЛюбомРежиме И НЕ ЗаполнятьСчетаУчетаВДокументах(Объект.Дата)*/)
			{
			}
			if(true/*ТипЗнч(ДанныеТабличнойЧасти) = Тип("СтрокаТаблицыЗначений") ИЛИ ТипЗнч(ДанныеТабличнойЧасти) = Тип("ТаблицаЗначений")*/)
			{
				/*//Процедура должна вызываться для табличной части или строки табличной части
*/
			}
			//ИмяДокумента = Объект.Метаданные().Имя;
			/*//Получим список заполняемых реквизитов
*/
			//ТаблицаРеквизитов 				= ПолучитьРеквизитыСчетовУчета(ИмяДокумента, ИмяТабличнойЧасти);
			if(true/*ТаблицаРеквизитов.Количество()=0*/)
			{
			}
			//ТаблицаСкладов					= ПодготовитьТаблицуСкладов(Объект, ТаблицаРеквизитов);
			/*//Приведем данные к одинаковому виду (завернем строку в массив)
*/
			//ПередалиТабличнуюЧасть = (ТипЗнч(ДанныеТабличнойЧасти) = ТипЗнч(Объект[ИмяТабличнойЧасти]));
			if(true/*ПередалиТабличнуюЧасть*/)
			{
				//СтрокиТабличнойЧасти = ДанныеТабличнойЧасти;
			}
			/*//По реквизитам документа определим хозяйственную ситуацию
*/
			//ХозяйственнаяСитуацияДокумента	= ОпределитьХозяйственнуюСитуациюПоДокументу(ИмяТабличнойЧасти, ИмяДокумента, Объект);
			/*//Счета учета берутся из регистра сведений
*/
			/*//Собственно заполнение счетов
*/
		}
		//Заполняет счета учета номенклатуры и затрат в "шапке" документа.
		//Параметры:
		//	Объект				 		- ДокументОбъект
		//	РеквизитНоменклатура 		- имя реквизита шапки, содержащего номенклатуру, для которой определяются счета учета;
		//									Значение субконто НоменклатурнаяГруппа определяются по имени реквизита, заданного в макете в колонке "Номенклатура"
		//	ЗаполнятьВЛюбомРежиме		- счета учета будут заполнены независимо от режима "Определять счета при проведении".

		public void ЗаполнитьСчетаУчетаШапки(/*Объект, ЗаполнятьБУ, ЗаполнятьНУ, ЗаполнятьСчетаЗатрат=Истина, ЗаполнятьСчетаНоменклатуры=Истина, РеквизитНоменклатура=Неопределено, ЗаполнятьВЛюбомРежиме=Ложь*/)
		{
			if(true/*НЕ ЗаполнятьБУ И НЕ ЗаполнятьНУ*/)
			{
			}
			if(true/*НЕ ЗаполнятьВЛюбомРежиме И НЕ ЗаполнятьСчетаУчетаВДокументах(Объект.Дата)*/)
			{
			}
			//ИмяДокумента = Объект.Метаданные().Имя;
			/*//Получим список заполняемых реквизитов
*/
			//ТаблицаРеквизитов 		= ПолучитьРеквизитыСчетовУчета(ИмяДокумента, "");
			/*//По реквизитам документа определим хозяйственную ситуацию
*/
			//ХозяйственнаяСитуация = ОпределитьХозяйственнуюСитуациюПоДокументу("", ИмяДокумента, Объект);
			/*//Собственно заполнение счетов
*/
			if(true/*ЗаполнятьСчетаЗатрат*/)
			{
				/*// Данных строки - нет, вызывается для шапки документа
*/
				//Истина);
				/*// При интерактивном заполнении перезаполняем уже заполненные счета
*/
			}
			if(true/*ЗаполнятьСчетаНоменклатуры*/)
			{
				//ТаблицаСкладов			= ПодготовитьТаблицуСкладов(Объект, ТаблицаРеквизитов);
				//Номенклатура			= ?(РеквизитНоменклатура = Неопределено, Неопределено, Объект[РеквизитНоменклатура]);
			}
		}
		// Заполняет значения субконто (затрат) в табличной части
		// Параметры:
		//  ИмяТабличнойЧасти - имя заполняемой табличной части
		//  Объект            - ДокументОбъект
		//  ЗаполнятьБУ       - следует заполнять реквизиты для отражения в БУ
		//  ЗаполнятьНУ       - следует заполнять реквизиты для отражения в НУ
		//	ЗаполнятьВЛюбомРежиме - субконто будут заполнены независимо от режима "Определять счета при проведении"
		//               Это используется в документах, не поддерживающих определение счетов при проведении.

		public void ЗаполнитьСубконтоТабличнойЧасти(/*ИмяТабличнойЧасти, Объект, ЗаполнятьБУ, ЗаполнятьНУ, ЗаполнятьВЛюбомРежиме = Ложь*/)
		{
			if(true/*НЕ ЗаполнятьВЛюбомРежиме И ИспользоватьОпределениеСчетовПриПроведенииДокументов(Объект.Дата)*/)
			{
				/*// Будут определены при проведении
*/
			}
			if(true/*НЕ ЗаполнятьБУ И НЕ ЗаполнятьНУ*/)
			{
				/*// Если документ не отражается в регл. учете, то не надо заполнять субконто
*/
			}
			if(true/*Объект[ИмяТабличнойЧасти].Количество() = 0*/)
			{
				/*// Нечего заполнять
*/
			}
			/*//Получим список заполняемых реквизитов
*/
			//ИмяДокумента      = Объект.Метаданные().Имя;
			//ТаблицаРеквизитов = ПолучитьРеквизитыСчетовУчета(ИмяДокумента, ИмяТабличнойЧасти);
			if(true/*ТаблицаРеквизитов.Количество() = 0*/)
			{
				/*// Нечего заполнять
*/
			}
		}
		//ЗАПОЛНЕНИЕ для режима, когда ИСПОЛЬЗУЕТСЯ определение счетов при проведении документов
		//Заполняет счета учета в переданной таблице значений с данными табличной части.
		//
		//Параметры:
		//	ДанныеТабличнойЧасти  - таблица значений

		public void ЗаполнитьПриПроведенииСчетаУчетаТабличнойЧасти(/*ИмяТабличнойЧасти, ДанныеТабличнойЧасти, СтруктураШапкиДокумента*/)
		{
			if(true/*ДанныеТабличнойЧасти.Количество()=0*/)
			{
				/*//Пустую таблицу заполнять не будем
*/
			}
			if(true/*НЕ ИспользоватьОпределениеСчетовПриПроведенииДокументов(СтруктураШапкиДокумента.Дата)*/)
			{
			}
			//ИмяДокумента = СтруктураШапкиДокумента.ВидДокумента;
			/*// Получим список заполняемых и контролируемых реквизитов
*/
			//ТаблицаРеквизитов 		= ПолучитьРеквизитыСчетовУчета	(ИмяДокумента, ИмяТабличнойЧасти);
			if(true/*НЕ СтруктураШапкиДокумента.Свойство("ОтражатьВБухгалтерскомУчете") ИЛИ НЕ СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете*/)
			{
				/*// Если не указано отражение в БУ, то счета не нужно заполнять.
*/
				/*// Могут быть реквизиты, которые заполняются, даже если документ не отражается в бухгалтерском учете
*/
				if(true/*ТаблицаРеквизитов.Найти("ПринадлежностьНоменклатуры", "Реквизит") = Неопределено*/)
				{
					/*// Если таких реквизитов в этой табличной части нет - то ничего не делаем
*/
				}
			}
			/*// дозаполним значения счетов учета
*/
			/*// По реквизитам документа определим хозяйственную операцию
*/
			//ХозяйственнаяСитуацияДокумента = ОпределитьХозяйственнуюСитуациюПоДокументу(ИмяТабличнойЧасти, ИмяДокумента, СтруктураШапкиДокумента);
			/*УстановленныеСчета 		= ПолучитьСчетаУчетаНоменклатурыИзДокумента(
								СтруктураШапкиДокумента.Организация,
								СтруктураШапкиДокумента.Дата,
								ДанныеТабличнойЧасти.ВыгрузитьКолонку("Номенклатура")
								);*/
			//РозничнаяТорговляОблагаетсяЕНВД = РозничнаяТорговляОблагаетсяЕНВД(СтруктураШапкиДокумента.Организация, СтруктураШапкиДокумента.Дата);
		}
		//Заполняет счета учета в переданной структуре (СтруктуреШапкиДокумента).
		//
		//Параметры:
		//	РеквизитНоменклатура - имя реквизита шапки, содержащего номенклатуру, для которой определяются счета учета;
		//	Значение субконто НоменклатурнаяГруппа определяются по имени реквизита, заданного в макете в колонке "Номенклатура"

		public void ЗаполнитьПриПроведенииСчетаУчетаШапки(/*СтруктураШапкиДокумента, РеквизитНоменклатура = Неопределено*/)
		{
			if(true/*НЕ СтруктураШапкиДокумента.Свойство("ОтражатьВБухгалтерскомУчете") ИЛИ НЕ СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете*/)
			{
				/*//Если не указано отражение в БУ, то счета не нужно заполнять.
*/
			}
			if(true/*НЕ ИспользоватьОпределениеСчетовПриПроведенииДокументов(СтруктураШапкиДокумента.Дата)*/)
			{
			}
			//ИмяДокумента = СтруктураШапкиДокумента.ВидДокумента;
			/*//Получим список заполняемых и контролируемых реквизитов
*/
			//ТаблицаРеквизитов 		= ПолучитьРеквизитыСчетовУчета	(ИмяДокумента, "");
			/*//дозаполним значения счетов учета
*/
			/*//По реквизитам документа определим хозяйственную операцию
*/
			//ХозяйственнаяСитуация = ОпределитьХозяйственнуюСитуациюПоДокументу("", ИмяДокумента, СтруктураШапкиДокумента);
			//УстановитьСчетаЗатрат(СтруктураШапкиДокумента, ТаблицаРеквизитов, ХозяйственнаяСитуация, СтруктураШапкиДокумента);
			//Номенклатура			= ?(ЗначениеЗаполнено(РеквизитНоменклатура), СтруктураШапкиДокумента[РеквизитНоменклатура], Неопределено);
			//СтруктураСчетовУчета	= ПолучитьСчетаУчетаНоменклатурыИзНастроек(СтруктураШапкиДокумента.Организация, Номенклатура, , СтруктураШапкиДокумента.Дата);
			//УстановитьСчетаУчета(СтруктураШапкиДокумента, ТаблицаРеквизитов, СтруктураСчетовУчета, ХозяйственнаяСитуация);
		}
		//Заполняет счета учета в переданной таблице значений с данными табличной части и проверяет их заполнение.
		//

		public void ЗаполнитьИПроверитьЗаполнениеСчетовУчетаТабличнойЧасти(/*ИмяТабличнойЧасти, ДанныеТабличнойЧасти, СтруктураШапкиДокумента, Отказ, Заголовок*/)
		{
			/*//Заполним счета учета
*/
			//ЗаполнитьПриПроведенииСчетаУчетаТабличнойЧасти(ИмяТабличнойЧасти, ДанныеТабличнойЧасти, СтруктураШапкиДокумента);
			/*//Выполним проверку счетов учета
*/
			//ПроверитьСчетаУчетаТабличнойЧасти(ИмяТабличнойЧасти, ДанныеТабличнойЧасти, СтруктураШапкиДокумента, Отказ, Заголовок);
		}
		//Заполняет счета учета в переданной структуре (СтруктуреШапкиДокумента) и проверяет их заполнение.
		//

		public void ЗаполнитьИПроверитьЗаполнениеСчетовУчетаШапки(/*СтруктураШапкиДокумента, Отказ, Заголовок, РеквизитНоменклатура = Неопределено*/)
		{
			/*//Заполняем счета учета
*/
			//ЗаполнитьПриПроведенииСчетаУчетаШапки(СтруктураШапкиДокумента, РеквизитНоменклатура);
			/*//Выполним проверку счетов учета
*/
			//ПроверитьСчетаУчетаШапки(СтруктураШапкиДокумента, Отказ, Заголовок);
		}
		////////////////////////////////////////////////////////////////////////////////
		//
		// ПРОВЕРКА СЧЕТОВ УЧЕТА В ДОКУМЕНТАХ
		//
		//Выдает сообщение об ошибке и устанавливает Отказ = Истина.
		//Параметры:
		//	Ошибка				- 	строка, содержащая текст сообщения об ошибке. Может содержать служебный символ #
		//	Реквизит			- 	КлючИЗначение, содержащее Имя реквизита и его представление.
		//							Представлением реквизита будет заменен символ # в тексте сообщения об ошибке.
		//	НомерСтроки 		- 	Номер строки табличной части для выдачи в сообщении;
		//	ПредставлениеТабличнойЧасти, МетаданныеРеквизиты
		//						- 	кэш метаданных (инициализируется в этой процедуре).
		//

		public void СообщитьОбОшибкеЗаполненияСчетовУчетаТабличнойЧасти(/*Ошибка, Реквизит = Неопределено,
													НомерСтроки, ИмяДокумента, ИмяТабличнойЧасти,
													Отказ, Заголовок,
													ПредставлениеТабличнойЧасти = Неопределено, МетаданныеРеквизиты = Неопределено*/)
		{
			/*//Подготовим метаданные для получения представления реквизитов для выдачи сообщения.
*/
			if(true/*ПредставлениеТабличнойЧасти = Неопределено*/)
			{
				//ПредставлениеТабличнойЧасти = Метаданные.Документы[ИмяДокумента].ТабличныеЧасти[ИмяТабличнойЧасти].Представление();
			}
			if(true/*МетаданныеРеквизиты = Неопределено*/)
			{
				//МетаданныеРеквизиты = Метаданные.Документы[ИмяДокумента].ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты;
			}
			//СтрокаНачалаСообщенияОбОшибке = "В строке №"+СокрЛП(НомерСтроки)+" табличной части """+ПредставлениеТабличнойЧасти+""": ";
			if(true/*Реквизит <> Неопределено*/)
			{
				/*//Добавим название реквизита
*/
				//ПредставлениеРеквизита = СокрЛП(МетаданныеРеквизиты[Реквизит].Представление());
				//Ошибка = СтрЗаменить(Ошибка, "#", ПредставлениеРеквизита);
			}
			/*//Сообщаем
*/
			//ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + Ошибка, Отказ, Заголовок);
		}
		//Возвращает структуру реквизитов, подлежащих проверке в табличной части или шапке документа
		//
		//Параметры:
		//	РеквизитыСчетовУчета	- таблица, возвращаемая функцией ПолучитьРеквизитыСчетовУчета() и содержащая сведения о проверяемых реквизитах и условиях проверки

		public object ПолучитьСтруктуруПроверяемыхСчетовУчета(/*РеквизитыСчетовУчета, СтруктураШапкиДокумента*/)
		{
			//РеквизитыСчетовНалоговогоУчета 	= ПолучитьРеквизитыСчетовНалоговогоУчета();
			//СтруктураРеквизитов = Новый Структура();
			return null;
		}
		//Выполняет проверку счета на заполненность
		//

		public object ПроверитьЗаполненностьСчета(/*СтрокаТаблицы, Реквизит, Услуга, ХозяйственнаяСитуация, УсловияДопустимостиПустыхСчетов*/)
		{
			/*//некоторые поля не обязательны для услуг
*/
			/*//счета НУ можно не заполнять для принятых в переработку
*/
			/*//Счета НУ можно не заполнять, если счет БУ - забалансовый
*/
			//УсловияДопустимостиПустыхСчетов.СчетаНУМожноНеЗаполнять.Свойство(Реквизит) И ЗабалансовыйСчет(СтрокаТаблицы[УсловияДопустимостиПустыхСчетов.СчетаНУМожноНеЗаполнять[Реквизит]]);
			return null;
		}
		//Возвращает предопределенные значения, описывающие условия, в которых не требуется проверки счетов
		//

		public void ПолучитьКонстантыПроверкиСчетов(/*УсловияДопустимостиПустыхСчетов, ОпциональныеПоля*/)
		{
			/*//ОПИСАНЫ СИТУАЦИИ, КОГДА СЧЕТА МОГУТ БЫТЬ ПУСТЫМИ
*/
			//УсловияДопустимостиПустыхСчетов = Новый Структура();
			/*//Некоторые счета можно не заполнять для услуг
*/
			/*УсловияДопустимостиПустыхСчетов.Вставить(
		"СчетаКоторыеМожноНеЗаполнятьДляУслуг", 
		Новый Структура("Счет,СчетНУ,СчетУчетаБУ,СчетУчетаНУ,ПринятыеСчетУчетаБУ,ПринятыеСчетУчетаНУ"));*/
			/*//Счета налогового учета можно не заполнять, если:
*/
			/*//	- основной счет бухгалтерского учета - забалансовый
*/
			/*//(значения структуры - счета БУ, которые при этом должны быть забалансовыми)
*/
			/*УсловияДопустимостиПустыхСчетов.Вставить(
		"СчетаНУМожноНеЗаполнять",
		Новый Структура("СчетНУ,СчетУчетаНУ,НовыйСчетУчетаНУ,ПринятыеСчетУчетаНУ,НовыйПринятыеСчетУчетаНУ","Счет","СчетУчетаБУ","НовыйСчетУчетаБУ","ПринятыеСчетУчетаБУ","НовыйПринятыеСчетУчетаБУ"));*/
			/*//Счет затрат НУ можно не заполнять, если статус материальных затрат - "ПринятыеВПереработку";
*/
			/*УсловияДопустимостиПустыхСчетов.Вставить(
		"СчетаЗатратНУМожноНеЗаполнять",
		Новый Структура("СчетЗатратНУ"));*/
			/*//ОПИСАН НАБОР ОПЦИОНАЛЬНЫХ ПОЛЕЙ (т.е. когда одно из полей набора обязательно должно быть заполнено)
*/
			/*//проверяем отдельно.
*/
			//ОпциональныеПоля = Новый Массив();
			/*//Массив содержит все возможные наборы опциональных полей, не важно, присутствуют они в данном документе или нет.
*/
			/*//Для каждого набора опциональных полей структуру, содержащую ключи:
*/
			/*//	СтрокаСообщенияОбОшибке - текст, выводимый если ни одно из полей набора не заполнено;
*/
			/*//	СтруктураПолей			- структура, перечень опциональных полей.
*/
			/*ОпциональныеПоля.Добавить(Новый Структура("СтруктураПолей, СтрокаСообщенияОбОшибке",
	    Новый Структура("СчетУчетаБУ,ПринятыеСчетУчетаБУ"),
		"Не заполнены счета учета"
		));*/
			/*ОпциональныеПоля.Добавить(Новый Структура("СтруктураПолей, СтрокаСообщенияОбОшибке",
	    Новый Структура("НовыйСчетУчетаБУ,НовыйПринятыеСчетУчетаБУ"),
		"Не заполнены новые счета учета"
		));*/
			/*ОпциональныеПоля.Добавить(Новый Структура("СтруктураПолей, СтрокаСообщенияОбОшибке",
	    Новый Структура("СчетУчетаНУ,ПринятыеСчетУчетаНУ"),
		"Не заполнены счета учета (НУ)"
		));*/
			/*ОпциональныеПоля.Добавить(Новый Структура("СтруктураПолей, СтрокаСообщенияОбОшибке",
	    Новый Структура("НовыйСчетУчетаНУ,НовыйПринятыеСчетУчетаНУ"),
		"Не заполнены новые счета учета (НУ)"
		));*/
			/*ОпциональныеПоля.Добавить(Новый Структура("СтруктураПолей, СтрокаСообщенияОбОшибке",
	    Новый Структура("ПереданныеСобственныеБУ,ПереданныеПринятыеБУ"),
		"Не заполнены счета учета переданные"
		));*/
			/*ОпциональныеПоля.Добавить(Новый Структура("СтруктураПолей, СтрокаСообщенияОбОшибке",
	    Новый Структура("ПереданныеСобственныеНУ,ПереданныеПринятыеНУ"),
		"Не заполнены счета учета переданные (НУ)"
		));*/
		}
		//Выполняет проверку заполнения счетов номенклатуры в табличной части документа.
		//Выдает сообщение пользователю и устанавливает Отказ=Истина в случае не заполненных реквизитов.
		//Параметры:
		//	ИмяТабличнойЧасти				- имя проверяемой табличной чати;
		//	ДанныеТабличнойЧасти			- проверяемая таблица с данными табличной части;
		//	ИмяДокумента 					- имя документа;
		//	СтруктураШапкиДокумента			- структура реквизитов шапки документа, по данным которой могут применяться условия -
		//									  проверять заполнение реквизита или нет;
		//	Заголовок						- заголовок для выдачи сообщения об ошибке;
		//	Отказ 							- в случае ошибки (не заполненных реквизитов) будет установлен в Истина.

		public void ПроверитьСчетаУчетаТабличнойЧасти(/*ИмяТабличнойЧасти, ДанныеТабличнойЧасти, СтруктураШапкиДокумента, Отказ, Заголовок*/)
		{
			if(true/*НЕ СтруктураШапкиДокумента.Свойство("ОтражатьВБухгалтерскомУчете") ИЛИ НЕ СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете*/)
			{
				/*//Если не указано отражение в БУ, то счета могут быть не заполнены.
*/
			}
			if(true/*ДанныеТабличнойЧасти.Количество()=0*/)
			{
				/*//Пустую таблицу проверять не будем
*/
			}
			//ИмяДокумента = СтруктураШапкиДокумента.ВидДокумента;
			//РеквизитыСчетовУчета = ПолучитьРеквизитыСчетовУчета(ИмяДокумента, ИмяТабличнойЧасти);
			if(true/*РеквизитыСчетовУчета.Количество() = 0*/)
			{
				/*//Работа со счетами в этой табличной части не предусмотрена
*/
			}
			/*//Инициализируем значения переменных
*/
			//ПредставлениеТабличнойЧасти 	= Неопределено;
			//МетаданныеРеквизиты         	= Неопределено;
			//УсловияДопустимостиПустыхСчетов = Неопределено;
			//ОпциональныеПоля 				= Неопределено;
			//ПолучитьКонстантыПроверкиСчетов(УсловияДопустимостиПустыхСчетов, ОпциональныеПоля);
			/*//Определим перечень проверяемых полей
*/
			//СтруктураОбязательныхПолей = ПолучитьСтруктуруПроверяемыхСчетовУчета(РеквизитыСчетовУчета, СтруктураШапкиДокумента);
			/*//Приведем состав опциональных полей в соответствии с структурой проверяемых в данный момент реквизитов
*/
			//КоличествоСтрок = ОпциональныеПоля.Количество();
			/*//Получим хозяйственную ситуацию документа
*/
			//ХозяйственнаяСитуацияДокумента = ОпределитьХозяйственнуюСитуациюПоДокументу(ИмяТабличнойЧасти, ИмяДокумента, СтруктураШапкиДокумента);
			/*//Проверяем, есть ли услуги в табличной части
*/
			//КолонкаУслуга = ДанныеТабличнойЧасти.Колонки.Найти("Услуга");
			if(true/*КолонкаУслуга = Неопределено*/)
			{
				//ЕстьУслуги = Ложь;
			}
			/*//Цикл по строкам табличной части.
*/
			/*//цикл по строкам
*/
		}
		//Выполняет проверку заполнения счетов номенклатуры в шапке документа.
		//Выдает сообщение пользователю и устанавливает Отказ=Истина в случае не заполненных реквизитов.
		//Параметры:
		//	СтруктураШапкиДокумента			- структура реквизитов шапки документа;
		//	Заголовок						- заголовок для выдачи сообщения об ошибке;
		//	Отказ 							- в случае ошибки (не заполненных реквизитов) будет установлен в Истина.

		public void ПроверитьСчетаУчетаШапки(/*СтруктураШапкиДокумента, Отказ, Заголовок*/)
		{
			if(true/*НЕ СтруктураШапкиДокумента.Свойство("ОтражатьВБухгалтерскомУчете") ИЛИ НЕ СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете*/)
			{
				/*//Если не указано отражение в БУ, то счета могут быть не заполнены.
*/
			}
			//ИмяДокумента = СтруктураШапкиДокумента.ВидДокумента;
			//РеквизитыСчетовУчета = ПолучитьРеквизитыСчетовУчета(ИмяДокумента, "");
			if(true/*РеквизитыСчетовУчета.Количество()=0*/)
			{
				/*//в шапке этого документа не обрабатываются счета учета
*/
			}
			//СтруктураОбязательныхПолей = ПолучитьСтруктуруПроверяемыхСчетовУчета(РеквизитыСчетовУчета, СтруктураШапкиДокумента);
			/*//Подготовим константы
*/
			/*//ОпциональныеПоля не используем
*/
			//УсловияДопустимостиПустыхСчетов = Неопределено;
			//ПолучитьКонстантыПроверкиСчетов(УсловияДопустимостиПустыхСчетов, Неопределено);
			/*//Получим данные о хозяйственной ситуации
*/
			//Услуга   				= СтруктураОбязательныхПолей.Свойство("Услуга") И СтруктураОбязательныхПолей.Услуга;
			//ХозяйственнаяСитуация 	= ОпределитьХозяйственнуюСитуациюПоДокументу("", ИмяДокумента, СтруктураШапкиДокумента);
			/*//Проверим каждое из полей
*/
		}
		//НАБОР ФУНКЦИЙ ДЛЯ ОПРЕДЕЛЕНИЯ ТЕКУЩЕЙ ХОЗЯЙСТВЕННОЙ СИТУАЦИИ, ОТРАЖАЕМОЙ ДОКУМЕНТОМ
		//Возвращает строку - наименование хозяйственной ситуации, определенное по шапке документа
		//Возвращает пустую строку, если хозяйственную ситуацию нужно определять по строке.
		//Параметры:
		//		СтруктураШапкиДокумента - структура или ДокументОбъект

		public object ОпределитьХозяйственнуюСитуациюПоДокументу(/*ИмяТабличнойЧасти, ИмяДокумента, СтруктураШапкиДокумента*/)
		{
			if(true/*ИмяДокумента = "ВозвратТоваровПоставщику"*/)
			{
				if(true/*ПроверитьВидОперации(СтруктураШапкиДокумента, "ИзПереработки")*/)
				{
				}
			}
			return null;
		}
		//Возвращает строку - наименование хозяйственной ситуации, определенное по строке документа.
		//Параметры:
		//		СтруктураШапкиДокумента - структура или ДокументОбъект
		//		ДанныеСтроки - строка табличной части или таблицы значений

		public object ОпределитьХозяйственнуюСитуациюПоСтроке(/*ИмяТабличнойЧасти, ИмяДокумента, СтруктураШапкиДокумента, ДанныеСтроки, ХозяйственнаяСитуация*/)
		{
			if(true/*НЕ ПустаяСтрока(ХозяйственнаяСитуация)*/)
			{
			}
			return null;
		}
		//Возвращает Истина, если в документе установлен вид операции с переданным именем.
		//Параметры:
		//		СтруктураШапкиДокумента - структура или ДокументОбъект
		//		ВидОперации				- строка, имя значения перечисления

		public object ПроверитьВидОперации(/*СтруктураШапкиДокумента, ВидОперации*/)
		{
			/*//Порядок обращения не отличается от того, передана структура шапки или документ-объект
*/
			if(true/*СтруктураШапкиДокумента.ВидОперации = Перечисления[СтруктураШапкиДокумента.ВидОперации.Метаданные().Имя][ВидОперации]*/)
			{
			}
			return null;
		}
		//Возвращает Истина, если в строке установлена статья затрат со статусом ПринятыеВПереработку.
		//Параметры:
		//		ДанныеСтроки - строка табличной части или таблицы значений
		//		Для строки табличы значений 	- должна быть колонка "СтатусМатериальныхЗатрат".
		//		Для строки табличной части   	- должна быть колонка "СтатьяЗатрат"

		public object ПроверитьСтатусМатериальныхЗатратПереработка(/*ДанныеСтроки*/)
		{
			if(true/*ТипЗнч(ДанныеСтроки)=Тип("СтрокаТаблицыЗначений")*/)
			{
				//Возврат ДанныеСтроки.СтатусМатериальныхЗатрат 				= Перечисления.СтатусыМатериальныхЗатратНаПроизводство.ПринятыеВПереработку;
			}
			return null;
		}
		//Возвращает Истина, если в документе установлен договор с видом "с комитентом".
		//Параметры:
		//		СтруктураШапкиДокумента - структура или ДокументОбъект
		//			Если передана структура, то она должна содержать свойство ВидДоговора
		//		ИмяРеквизита			- строка, имя реквизита с договором.

		public object ПроверитьДоговорСКомитентом(/*СтруктураШапкиДокумента, ИмяРеквизита = "ДоговорКонтрагента"*/)
		{
			/*//Для структуры - должно быть свойство "ВидДоговора".
*/
			/*//Для объекта - реквизит передается в шапке, вид получается через точку
*/
			if(true/*ТипЗнч(СтруктураШапкиДокумента) = Тип("Структура")*/)
			{
				if(true/*СтруктураШапкиДокумента.Свойство("ВидДоговора")*/)
				{
					//Возврат СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом;
				}
			}
			return null;
		}
		//Возвращает Истина, если требуется установить счет учета товаров в рознице.
		//Параметры:
		//		ЗаполняемыйОбъект 	- структура или ДокументОбъект или строка таблицы значений или строка табличной части.
		//		ДанныеРеквизита		- строка таблицы значений с данными макета СчетаУчетаВДокументах
		//		РозничныйСклад 		- булево, принадлежность склада к розничным.
		//			Если передана структура или строка табличной части, то значение параметра РозничныйСклад должно быть Неопределено.

		public object НуженРозничныйСчет(/*ЗаполняемыйОбъект, ДанныеРеквизита, РозничныйСклад*/)
		{
			/*//Если РозничныйСклад = Неопределено, то считаем, что передали на заполнение структуру или строку таблицы значений
*/
			/*//На розничный счет может быть заменен только счет "товары на складах" (41.01)
*/
			if(true/*ЗаполняемыйОбъект[ДанныеРеквизита.Реквизит] <> ПланыСчетов.Хозрасчетный.ТоварыНаСкладах 
		И
		 ЗаполняемыйОбъект[ДанныеРеквизита.Реквизит] <> ПланыСчетов.Налоговый.ТоварыНаСкладах*/)
			{
			}
			/*//Для объекта/табличной части возьмем признак розницы из таблицы складов
*/
			if(true/*РозничныйСклад <> Неопределено*/)
			{
			}
			/*//Для определения розничного склада и подстановки счета учета розницы,
*/
			/*//заполняемая таблица табличной части или структура шапки должна 
*/
			/*//содержать колонку (свойство) с видом склада.
*/
			/*//Колонка должна называться "ВидСклада" либо иметь вид "СкладВидСклада", где Склад - 
*/
			/*//это имя реквизита "Склад" табличной части или имя реквизита "Склад" шапки 
*/
			/*//(если имя реквизита табличной части не заполнено).
*/
			//ИмяКолонки 			= ?(ПустаяСтрока(ДанныеРеквизита.СкладТабличнойЧасти),ДанныеРеквизита.СкладШапки,ДанныеРеквизита.СкладТабличнойЧасти);
			if(true/*ПустаяСтрока(ИмяКолонки)*/)
			{
				//ИмяКолонки 	= "ВидСклада";
			}
			if(true/*ТипЗнч(ЗаполняемыйОбъект[ИмяКолонки]) = Тип("ПеречислениеСсылка.ВидыСкладов") И ЗначениеЗаполнено(ЗаполняемыйОбъект[ИмяКолонки])*/)
			{
			}
			return null;
		}
		//Возвращает Истина, если в документе вид поступления - ПоОрдеру.
		//Параметры:
		//		ДанныеРеквизита - строка таблицы значений с данными макета СчетаУчетаВДокументах
		//		Объект 			- ДокументОбъект

		public object ПоступлениеПоОрдеру(/*ДанныеРеквизита, Объект*/)
		{
			/*//1 условие - в таблице реквизитов указано, что ордер для определения счетов может использоваться
*/
			/*//2 условие - вид поступления должен быть "по ордеру"
*/
			//Объект.Метаданные().Реквизиты.Найти("ВидПоступления")<>Неопределено И Объект.ВидПоступления = Перечисления.ВидыПоступленияТоваров.ПоОрдеру;
			return null;
		}
		//Возвращает номенклатурную группу, к которой принадлежит номенклатура в строке.
		//Если передана строка таблицы значений, то она должна содержать колонку НоменклатурнаяГруппа.
		//Параметры:
		//		ИмяРеквизита - Строка, имя реквизита, хранящего Номенклатуру
		//		ДанныеСтроки - строка таблицы значений или табличной части.

		public object ОпределитьНоменклатурнуюГруппу(/*ДанныеСтроки, ИмяРеквизита*/)
		{
			/*//Для таблицы обращаемся к реквизиту с "НоменклатурнаяГруппа",
*/
			/*//для табличной части - обращаемся через точку
*/
			if(true/*ТипЗнч(ДанныеСтроки)=Тип("СтрокаТаблицыЗначений")*/)
			{
			}
			return null;
		}
		// Определяет, облагается ли розничная торговля ЕНВД
		// От этого зависят счета доходов и расходов

		public object РозничнаяТорговляОблагаетсяЕНВД(/*Организация, Дата*/)
		{
			//УчетнаяПолитика = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитикиРегл(Дата, Организация);
			if(true/*УчетнаяПолитика = Неопределено*/)
			{
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		//
		// РАБОТА СО СЧЕТАМИ УЧЕТА В ФОРМАХ ДОКУМЕНТОВ
		//
		// Устанавливает видимость, автоотметку незаполненного, пропуск при вводе полей с данными счетов учета номенклатуры и затрат.
		// Не управляет видимостью надписей к полям.
		//
		// Параметры:
		//  ИмяДокумента						- имя документа
		//  ЭлементыФормы						- передаются для работы со счетами шапки (когда есть счета шапки и надо управлять полями, соответствующими счетам шапки)
		//  ТабличныеЧасти						- структура, ключи - имена табличных частей, значения - колонки соответствующих табличных полей;
		//  ПоказыватьВДокументахСчетаУчета		- булево, пользовательская настройка видимости реквизитов. Если передано Неопределено - то видимость не меняется.
		//  ОтражатьВБухгалтерскомУчете,
		//  ОтражатьВНалоговомУчете,
		//  ОтражатьНДС							- булевы, значения флагов документа.

		public void УстановитьСвойстваПолейСчетов(/*Дата, ИмяДокумента, ЭлементыФормы, ТабличныеЧасти, ПоказыватьВДокументахСчетаУчета, ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете, ОтражатьНДС=Ложь*/)
		{
			/*//Список налоговых счетов
*/
			//СчетаНУ = ПолучитьРеквизитыСчетовНалоговогоУчета();
			/*СчетаНДС = Новый Структура(
	"СчетУчетаНДС,
	|СчетУчетаНДСПоРеализации");*/
			//ИспользоватьОпределениеСчетовПриПроведенииДокументов = ИспользоватьОпределениеСчетовПриПроведенииДокументов(Дата);
			/*//Шапка
*/
			if(true/*ЭлементыФормы<>Неопределено*/)
			{
				//ТаблицаРеквизитов 	= ПолучитьРеквизитыСчетовУчета(ИмяДокумента, "");
			}
			/*//Табличные части
*/
		}
		// Определяет уместность интерактивного заполнения счетов, задает вопрос, заполняет счета.
		//
		// Параметры:
		//  Объект       - ДокументОбъект
		//	ЕстьСчетаВШапке
		//               - булево, определяет поддерживается ли работа со счетами шапки документа, не обслуживаемыми этим модулем (например, счета расчетов);
		//                 Если передана Истина, то документ должен иметь метод ЗаполнитьСтруктуруСчетовУчетаШапки();
		//                 Будет проверено, отличаются ли текущие счета в шапке со счетами по-умолчанию,
		//                 возвращаемыми методом ЗаполнитьСтруктуруСчетовУчетаШапки(),
		//				   и если отличается - выдан запрос пользователю на перезаполнение счетов.
		//	СтруктураТабличныхЧастей
		//               - структура или соответствие, ключи которого - имена обрабатываемых табличных частей.
		//                 В соответствии допускается передавать в качестве ключа пустую строку, что обозначает шапку документа.
		//                 В качестве значения элемента структуры указывается ЛОЖЬ для табличных частей,
		//                 заполнение счетов в которых методом ЗаполнитьСчетаУчетаВТабЧасти() не поддерживается
		//                 (например, если табличная часть содержит счета учета расчетов).
		//                 Если в структуре переданы значения, отличные от Ложь, то документ должен иметь метод ЗаполнитьСчетаУчетаВТабЧасти()
		//	ЗаполнятьБУ,
		//	ЗаполнятьНУ  - булевы или Неопределено, необходимость заполнения счетов учета (Неопределено трактуется как "не трогать", оставлено для совместимости);
		//	ПрименениеУСН- булево, не обязательный, для того, чтобы в документе при применении УСН не задавались вопросы про налоговый учет вне зависимости от флага.
		//
		// Возвращаемое значение
		//  Истина       - какое-либо перезаполнение производилось
		//                 или
		//                 должно было производиться, но не производилось (например,
		//                 заполнение табличной части "Объекты строительства", заполнение счетов в которой
		//                 не выполняется унифицированным механизмом).
		//

		public object ИнтерактивноПерезаполнитьСчетаУчета(/*Объект, ЕстьСчетаВШапке, СтруктураТабличныхЧастей, ЗаполнятьБУ, ЗаполнятьНУ, ПрименениеУСН=Ложь*/)
		{
			if(true/*ЗаполнятьБУ<>Истина И ЗаполнятьНУ<>Истина*/)
			{
			}
			//ЗаполнятьСчетаУчетаВДокументах = ЗаполнятьСчетаУчетаВДокументах(Объект.Дата);
			//НадоЗаполнять 				= Ложь;
			//ТабличныеЧастиДляЗаполнения = Новый Массив;
			//ЕстьНеунифицированныеТЧ 	= Ложь;
			/*// Вопрос для заполненных табличных частей задаем всегда, если счета заполняются не при проведении документа.
*/
			/*// В одном и том же документе могут быть счета учета заполняемые как в при заполнении, так и при проведении документа,
*/
			/*// информация об этом - в значениях структуры табличных частей (ЛОЖЬ обозначает, что заполняются не при проведении).
*/
			//НадоЗаполнять = ЕстьНеунифицированныеТЧ ИЛИ ТабличныеЧастиДляЗаполнения.Количество()>0;
			//НадоСпрашивать= НадоЗаполнять;
			/*// Будем спрашивать пользователя, (1) если решили, что будем заполнять табличные части или счета номенклатуры и затрат в шапке
*/
			/*// (2) если есть чем заполнить остальные счета шапки (например - счета расчетов) (см. далее)
*/
			if(true/*ЕстьСчетаВШапке*/)
			{
				/*// Такие, как счета расчетов
*/
				//СтруктураСчетовШапки = Объект.ЗаполнитьСтруктуруСчетовУчетаШапки(ЗаполнятьБУ=Истина, ЗаполнятьНУ=Истина);
				/*// параметры ЗаполнитьСтруктуруСчетовУчетаШапки() должны быть булевого типа
*/
				/*//Проверим, надо ли менять/заполнять счета в шапке
*/
				if(true/*НЕ НадоЗаполнять*/)
				{
					/*// Проверим, есть ли в шапке значения, не соответствующие значениям по-умолчанию
*/
					/*// Если они есть, то будем спрашивать пользователя.
*/
				}
			}
			if(true/*НЕ НадоЗаполнять*/)
			{
			}
			/*// Зададим вопрос
*/
			if(true/*НадоСпрашивать И НЕ РаботаСДиалогами.НеобходимоПерезаполнитьСчетаУчета(ЗаполнятьБУ, ЗаполнятьНУ,ПрименениеУСН)*/)
			{
				/*// ответили "НЕ надо перезаполнить счета"
*/
			}
			/*// Заполним шапку
*/
			if(true/*ЕстьСчетаВШапке*/)
			{
				//ЗаполнитьЗначенияСвойств(Объект, СтруктураСчетовШапки);
			}
			/*// Заполним "унифицированные" табличные части
*/
			/*// Так как пользователь ответил, что надо перезаполнять счета, то вернем Истина
*/
			return null;
		}
	}
}
